﻿using ConfExpert.Forms.Base;
using ConfExpert.Utility;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevTeam;


using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace ConfExpert.Forms.Depo._7C
{
    public partial class NumuneSip : XForm
    {
        int CKBatchId = -1;
        public NumuneSip(int ckBatchId)
        {
            InitializeComponent();

            this.CKBatchId = ckBatchId;
            this.Text += "- " + AppSession.Lookups.CKBatch.FindByCKBatchId(CKBatchId).Notes;
        }

        private void NumuneSip_Load(object sender, EventArgs e)
        {
            

            
            gv1.Init("GetGPNumuneSip2", CKBatchId);
            gv1.AddDetailGrid(gv2, "Model");

            //gv2.SutunEkle("sel", typeof(int));
            //gv2.SutunEkle("OzelAdet", typeof(int));
            gv2.Columns["OzelAdet"].ToolTip = "Bu sütünu boş bırakırsanız seçtiğiniz execution'lardan 2'şer adet üretilir. Farklı adette üretim yapmak için buraya adet girmelisiniz.";

            gv1.AddColumn("Adet", typeof(int), "SUM(Child({FK}).Adet)");
            gv1.AddColumn("Seçilen", typeof(string), "Iif(MAX(Child({FK}).sel)=1,'E',null)");

            gv1.YanYanaGetir("Adet:Model");
            gv1.FormatAsNumber(0, "Adet");
            gv2.FormatAsNumber(0, "Adet", "OzelAdet");

            gv1.AddSummary("Adet");
            gv2.AddSummary("Adet");

            gv2.MakeColumnInvisible("Model", "Corpo", "sel");

            gv1.MakeRowSelectable();
            gv2.MakeRowSelectable();

            gv1.MakeReadOnly();
            gv2.MakeReadOnly("OzelAdet");

            gv1.BestFitColumns();
            gv2.BestFitColumns();

            //splitContainerControl1.SizeChanged += MySizeChanged;
            gv2.DoubleClick += gv2_DoubleClick;
            gv2.OptionsView.EnableAppearanceEvenRow = false;
            gv2.RowStyle+=gv2_RowStyle;

            bbiOlustur.ItemClick += bbiOlustur_ItemClick;
        }


        void gv2_RowStyle(object sender, RowStyleEventArgs e)
        {
            GridView gv = (sender as GridView);
            if (e.RowHandle > -1)
                if (gv.Columns.Contains(gv.Columns["sel"]))
                    if (gv.GetRowCellValue(e.RowHandle, "sel").ToInt() == 1)
                        e.Appearance.BackColor = Color.YellowGreen;
                    else
                        e.Appearance.Combine((e.RowHandle & 1) != 0 ? gv.Appearance.EvenRow : gv.Appearance.OddRow);
        }

        void gv2_DoubleClick(object sender, EventArgs e)
        {
            GridView view = (GridView)sender;
            Point pt = view.GridControl.PointToClient(Control.MousePosition);
            GridHitInfo info = view.CalcHitInfo(pt);
            if (info.InRow || info.InRowCell)
                if (info.RowHandle > -1)
                {
                    gv2.SetFocusedRowCellValue("sel", 1 - gv2.GetFocusedRowCellValue("sel").ToInt());
                    if (gv2.GetFocusedRowCellValue("sel").ToInt() == 0)
                        gv2.SetFocusedRowCellValue("OzelAdet", null);
                    else
                        gv2.SetFocusedRowCellValue("OzelAdet", 2);
                }

            //gv1.RefreshData();
            gv2.EndEditing();
            //string colCaption = info.Column == null ? "N/A" : info.Column.GetCaption();
        }


        void bbiOlustur_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gv2.EndEditing();
            DataTable dtModeller = new DataTable("Modeller");
            dtModeller.Columns.Add("Modello", typeof(string));
            dtModeller.Columns.Add("Model", typeof(string));
            dtModeller.Columns.Add("Corpo", typeof(string));
            dtModeller.Columns.Add("OzelAdet", typeof(int));

            foreach (DataRow r in gv2.DataTable().Rows)
                if (r["sel"].ToInt() == 1)
                    dtModeller.Rows.Add(r["Model"].ToString() + r["Corpo"].ToString(), 
                        r["Model"].ToString(), 
                        r["Corpo"].ToString(), 
                        r["OzelAdet"].ToInt());

            if (XtraMessageBox.Show("Emin misiniz?", "Teyid", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
            {
                string ser = dtModeller.Serialize();
                DataSet s = ExecuteDataSet("InsGPNumuneSip", CKBatchId, ser, WhoAmI);
                if (s.Tables.Count == 0)
                    ShowInfoMessage("İlgili nümune siparişi daha önce oluşturulmuş.");

                else if (s.Tables.Count == 2)
                    using (NumuneSipDurum drm = new NumuneSipDurum(s))
                        drm.ShowDialog();

                else
                {
                    //string ret = s.Tables[0].Rows[0][0].ToString();
                    ShowInfoMessage("Numune siparişi ve bağlı parça çıkış emri oluşturuldu.");

                    //ADIMLAR: 
                    //1. Numune siparişi oluştur (seasonbased)
                    //2. Çıkış partisi oluştur
                    //3. O parti için parça çıkış emri oluştur!

                    bbiOlustur.Enabled = false;
                }
            }
        }

    }
}
